/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package net.siit.ling;

import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;

import net.siit.datatype.*;

/**
 *
 * @author arthit
 */
public class Readability {
    
    public static double testReadability(String text) {
        ThaiSeg seg = null;
        try {
            seg = new ThaiSeg();
        } catch (Exception ex) {
            Logger.getLogger(Readability.class.getName()).log(Level.SEVERE, null, ex);
        }
        if (seg == null)
            return -1;
        
        int dword  = 0;
        int ndword = 0;
        int punc   = 0;
        int alllen      = 0;
        double avglen   = 0;
        
        List<AnnotatedRange<Integer>> tokens = seg.tokenizeLongestMatch(text);
        for (AnnotatedRange<Integer> token : tokens) {
            int label = token.getLabel();
            switch(label) {
                case ThaiSeg.TOKEN_LABEL_THAI_DICTIONARY_WORD:
                    dword++;
                    alllen += token.getEnd() - token.getStart();
                    break;
                case ThaiSeg.TOKEN_LABEL_THAI_NON_DICTIONARY_WORD:
                    ndword++;
                    alllen += token.getEnd() - token.getStart();
                    break;
                case ThaiSeg.TOKEN_LABEL_PUNCTUATION:
                    punc++;
                    break;
            }
        }
        avglen = (double) alllen / (double) (dword + ndword);
        
        return avglen;
    }
    
    public static void main(String[] args) {
        String text1 = "น่าเศร้า ขณะที่เราต่างก็ประกาศเรียกร้องหาสิทธิและเสรีภาพในการแสดงความคิดเห็น แต่ก็หนีไม่พ้นที่เรื่องแบบนี้กัดกร่อนหัวใจเรา เมื่อเราเกือบจะพูดได้อย่างเต็มปากว่า ผู้ใช้เวบบอร์ดในเมืองไทย ไม่มีประสิทธิภาพ";
        String text2 = "แม้จะเป็นกฎหมายที่มีอายุเพียง 10 ปี แต่เป็นที่ยอมรับกันว่า เป็นกฎหมายที่เป็นประโยชน์อย่างยิ่งต่อประชาชน และส่งผลให้สะเทือนอย่างมากในกระบวนการพัฒนาธรรมาภิบาล ในฐานะกลไกขับเคลื่อนการบริหารราชการแผ่นดินให้เป็นไปด้วยความโปร่งใสตรวจสอบได้";
        
        Readability read = new Readability();
        
        double score;
        
        
        System.out.println(read.testReadability(text1));
        System.out.println(read.testReadability(text2));
    }

}
